# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/9/12 0012 13:21
@Author : 测试开发工程师
@File : 4. linux 常用命令之性能统计.py
@Software: PyCharm
============================
"""

"""
性能测试
    找到性能瓶颈，占用多少资源，进行行性能统计

性能分析
    了解当前机器的负载，分析浏览器端的性能，系统关键性能分析上

性能统计知识：
    系统级性能数据分析
        linux系统，安卓系统
    进程级别性能数据分析
        
常用性能指标：
    cpu 代表算法的高效性
    mem 代表数据结构的使用合理性
    net io 等更多指标（net io 的不同合理使用同样会在 cpu 和 mem 上体现出影响）

统计方法：
    临时性分析 命令交互
    系统性分析 promethus grafana
    分析数据指标： QPS 响应时间，网络连接数，CPU ，内存IO 等
    
CPU 使用统计：
    cpu 信息 : 
        cat /proc/cpuinfo    processor（核数）
    系统负载与进程 cpu 占用 top
        top 
        load average : 1分钟，5分钟，15分钟
        Tasks: 任务数 （多少任务数），任务状态（running,sleeping,stopped,zombie）
        cpu 的使用率
        内存信息
        top -d : 需要间隔多久展示数据， - n 展示多少次，- p 限定在特定的PID（进程） 上  
    
    cpu 的关键指标：
        cpu 利用率 进程的 cpu 利用情况   （命令 cpu 是平均 cpu 利用率，不适合做性能分析）
        load average 系统负载情况
        
内存（MEM）占用统计
    free
        total 当前总内存
        used  已使用内存
        free   没使用的内存
        shared Memory 共享内存
        buffers/cache 缓冲，缓存
        available 可利用内存
        
    cat /proc/meminfo 保存了更多的内存使用数据
        MemTotal : 总内存
    
    ps
        进程级别的内存分析：
        ps -e -o uid,ppid,pcpu,pmem,rss,vsz,comm --sort -%mem | head -10
    top
        
网络连接统计
    查看网络连接： netstat -tnp | head -10
    当前机器上正在监听的句柄或者soccer ：netstat -tlnp
    
    数据统计：
        netstat -tn | awk 'NR>2{print $NF}' | sort | uniq -c | sort -nr
        
    统计方法：
        临时性分析 命令交互
        系统性分析 promethus grafana
         
    
    
    
    
    
    
"""